from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from webdriver_manager.chrome import ChromeDriverManager

from fake_useragent import UserAgent



class Browser:

    """ Класс представляющий браузер """

    def get_browser(self, display_browser, proxy=None):

        """ Настроить и получить браузер """

        user_agent = UserAgent()
        user_agent = user_agent.random
        driver = ChromeDriverManager().install()

        options = webdriver.ChromeOptions()
        options.add_argument(f'--user-agent={user_agent}')
        options.add_argument(f'--disable-blink-features=AutomationControlled')

        if not display_browser == 'yes': options.add_argument('--headless')

        if proxy:  # Если собираемся парсить через прокси

           browser =  self.get_browser_with_proxy(user_agent, driver, options, proxy)

           return browser

        else:  # Если не собираемся парсить через прокси

            browser = webdriver.Chrome(
                driver,
                options=options
            )

            return browser


    def get_browser_with_proxy(self, user_agent, driver, options, proxy):

        """ Возвращаем браузер с прокси """

        caps = DesiredCapabilities.CHROME
        caps['marrionette'] = True

        caps['proxy'] = {
            'proxyType': 'MANUAL',
            'httpProxy': proxy,
            'ftpProxy': proxy,
            'sslProxy': proxy
        }

        browser = webdriver.Chrome(
            driver,
            options=options,
            desired_capabilities=caps
        )

        return browser
